package com.atguigu.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.commands.JedisCommands;

//实验一，存在超卖情况
public class SecKill_redis1 {

	public static boolean doSecKill(String uid, String prodid) throws Exception {
		//先写注释，写出编码思路（伪代码）
		//1.准备两个key
		String qtKey = "sk:"+prodid+":qt";
		String usrKey = "sk:"+prodid+":usr";

		//2.连接服务器，获取jedis
		Jedis jedis = new Jedis("192.168.137.118",6379);

		//3.判断用户是否秒杀成功，如果秒杀成功就不能再秒杀。
		boolean flag = jedis.sismember(usrKey,uid);
		if(flag){
			System.out.println("不能重复秒杀!");
			jedis.close();
			return false;
		}

		//4.判断商品库存是否初始化，没初始化不能秒杀
		boolean flag2 = jedis.exists(qtKey);
		if(!flag2){
			System.out.println("库存未初始化，不能秒杀!");
			jedis.close();
			return false;
		}

		//5.判断库存数量，如果小于等于0，无法秒杀
		String qtStr = jedis.get(qtKey);
		int qt = Integer.parseInt(qtStr);
		if(qt<=0){
			System.out.println("库存不足，不能秒杀!");
			jedis.close();
			return false;
		}

		//6.开始秒杀
		//6.1 减少库存
		jedis.decr(qtKey);

		//6.2 加人
		jedis.sadd(usrKey,uid);

		//7.关闭连接
		jedis.close();
		System.out.println("秒杀成功!");
		return true;
	}

}
